//
//  HMBaseTableViewController.swift
//  大深圳微博01
//
//  Created by shenzhenIOS on 16/4/8.
//  Copyright © 2016年 shenzhenIOS. All rights reserved.
//

import UIKit

/// 6.需要实现协议里面的方法,如果不实现非optional的方法还是会报错
class HMBaseTableViewController: UITableViewController {
    // 用户是否登录
    var userLogin = HMUserAccountViewModel.sharedInstance.userLogin
    
    // 是控制器加载view的时候会调用,如果直接调用super.loadView(),后续该怎么加载就会怎么加载sb/xib,在loadView里面给view设置值后,那么就不会再去sb/xib
    override func loadView() {
        userLogin ? super.loadView() : setupVisitorView()
    }
    
    // MARK: - 按钮点击事件
//    @objc private func didClickRegister() {
//        print("didClickRegister")
//    }
//    
//    @objc private func didClickLogin() {
//        print("didClickLogin")
//    }
    
    // MARK: - 私有方法
    /// 设置访客视图
    private func setupVisitorView() {
        view = visitorView
        
        // 5.设置访客视图的代理,当设置代理后,没有实现这个协议会报错
        visitorView.delegate = self
        
        // 设置访客视图内容, 4个子控制器都会走这里,self具体是什么类型看创建的子类: 多态
//        print("self: \(self)")
        if self is HMHomeTableViewController {
            visitorView.startRotation()
        } else if self is HMMessageTableViewController {
            visitorView.setupVisitorViewInfo("visitordiscover_image_message", message: "登录后，别人评论你的微博，发给你的消息，都会在这里收到通知")
        } else if self is HMDiscoverTableViewController {
            visitorView.setupVisitorViewInfo("visitordiscover_image_message", message: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
        } else if self is HMProfileTableViewController {
            visitorView.setupVisitorViewInfo("visitordiscover_image_profile", message: "登录后，你的微博、相册、个人资料会显示在这里，展示给别人")
        }
        
        // 设置导航栏按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("visitorViewDidClickRegisterButton"))
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("visitorViewDidClickLoginButton"))
    }

    // MARK: - 懒加载
    /// 给别人调用的时候尽量简单
    /// 高内聚低耦合
    lazy var visitorView: HMVisitorView = HMVisitorView()   // [[HMVisitorView alloc] init]
}

// 扩展和OC的分类很像,只能扩展方法,可以让对象实现协议,好处方便管理代码
extension HMBaseTableViewController: HMVisitorViewDelege {
//    var name: String = ""
    // MARK: - 代理方法
    /// 6.需要实现协议里面的方法,如果不实现非optional的方法还是会报错
    func visitorViewDidClickRegisterButton() {
        print("visitorViewDidClickRegisterButton")
    }
    
    func visitorViewDidClickLoginButton() {
        // 弹出Oauth登录界面
        let oauthVC = HMOauthViewController()
        
        // 包装一个导航控制器
        let nav = UINavigationController(rootViewController: oauthVC)
        
        presentViewController(nav, animated: true, completion: nil)
    }
}